package com.xnyzc.lhy.resource.service.amap;

import com.xnyzc.lhy.order.entity.order.OaDOrder;
import com.xnyzc.lhy.resource.entity.amap.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.Map;

public interface IAmapService {
    /**
     * 根据服务Id获取到终端ID
     *
     * @param param
     * @return
     */
    Long getAmapTid(AmapTidParam param);

    /**
     * 逆地理编码
     *
     * @param location 经纬度起始:终到
     * @return
     */
    String getRegeo(String location);

    /**
     * 获猎鹰服务轨迹ID
     *
     * @param param
     * @return
     */
    Long getAmapGpdId(AmapGpsIdParam param);

    /**
     * 获取猎鹰服务
     *
     * @param sid
     * @param tid
     * @return
     */
    Long getAmapGpdId(String sid, String tid);

    Long getAmapTid(String serviceId, Long userId, String clientId, String tag);

    /**
     * 获取两点之间的距离
     *
     * @param startLng 开始经度
     * @param startLat 开始纬度
     * @param endLng   结束经度
     * @param endLat   结束纬度
     * @return
     */
    Double getDistance(String startLng, String startLat, String endLng, String endLat);

    /**
     * 获取两个点之间的距离与时间(文字版)
     *
     * @param startPoint 开始点位
     * @param endPoint   结束点位
     * @return
     */
    HashMap<String, String> getDistanceAndDuration(String startPoint, String endPoint);

    /**
     * 获取两个点之间的距离与时间(数字版)
     *
     * @param startPoint 开始点位
     * @param endPoint   结束点位
     * @return
     */
    Map<String, Integer> getStrategy(String startPoint, String endPoint);

    /**
     * 根据开始与结束时间获取轨迹信息
     *
     * @return
     */
    AmapGouldHistoryGps getHistoryGps(AmapHistoryGpsParam param);

    /**
     * 删除轨迹信息
     *
     * @param sid  服务ID
     * @param trid 轨迹ID
     * @param tid  终端ID
     * @return
     */
    Boolean deleteGpsHistorys(Long sid, Long trid, Long tid);

    /**
     * 获取两个点位之间的距离,返回距离实体类
     *
     * @param startPoint 开始点位
     * @param endPoint   结束点位
     * @return
     */
    AmapGouldResult getDistancePoint(String startPoint, String endPoint);

    /**
     * 获取两点之间的直线距离
     *
     * @param startLng 开始经度
     * @param startLat 开始纬度
     * @param endLng   结束经度
     * @param endLat   结束纬度
     * @return
     */
    Integer getLineDistance(String startLng, String startLat, String endLng, String endLat);

    /**
     * 上传点位数据
     * @param oaDOrder
     * @return
     */
    boolean uploadTrackFromMongo(OaDOrder oaDOrder);
}
